package com.powernode.controller;


import com.powernode.common.Page;
import com.powernode.common.Result;
import com.powernode.domain.SysRole;
import com.powernode.enums.ResultEnums;
import com.powernode.service.SysRoleService;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

@RestController
@RequestMapping("/sysRole")
public class SysRoleController extends BaseController{
    @Resource
    private SysRoleService sysRoleService;

    /**
     * 分页查询角色
     * POST http://127.0.0.1:8080/sysRole/getByPage
     * 接口ID：60111890
     * 接口地址：https://www.apifox.cn/web/project/2244992/apis/api-60111890
     */
    @PostMapping("/getByPage")
    public Result<Page<SysRole>> getByPage(@RequestBody Page<SysRole> page){
      page=sysRoleService.getByPage(page);
      return new Result<>(page);
    }
    /**
     * 添加角色
     * POST http://127.0.0.1:8080/sysRole/save
     * 接口ID：60111892
     * 接口地址：https://www.apifox.cn/web/project/2244992/apis/api-60111892
     */
    @PostMapping("/save")
    public Result<?> save(@RequestBody SysRole sysRole){
        sysRole.setCreateBy(getUsername());
        sysRole.setCreateTime(new Date());
        sysRoleService.insert(sysRole);
        return new Result("添加成功");
    }

    /**
     * 根据ID查询角色
     * GET http://127.0.0.1:8080/sysRole/get/{roleId}
     * 接口ID：60111895
     * 接口地址：https://www.apifox.cn/web/project/2244992/apis/api-60111895
     */
    @GetMapping("/get/{roleId}")
    public Result<?> get(@PathVariable Long roleId){
        SysRole sysRole = sysRoleService.selectByPrimaryKey(roleId);
        return new Result<>(sysRole);
    }

    /**
     * 修改角色
     * PUT http://127.0.0.1:8080/sysRole/update
     * 接口ID：60111893
     * 接口地址：https://www.apifox.cn/web/project/2244992/apis/api-60111893
     */
    @PutMapping("/update")
    public Result<?> update(@RequestBody SysRole sysRole){
        sysRole.setUpdateBy(getUsername());
        sysRole.setUpdateTime(new Date());
        sysRoleService.updateByPrimaryKey(sysRole);
        return new Result<>("修改成功");
    }

    /**
     * 删除角色
     * DELETE http://127.0.0.1:8080/sysRole/delete/{roleId}
     * 接口ID：60111894
     * 接口地址：https://www.apifox.cn/web/project/2244992/apis/api-60111894
     */
    @DeleteMapping("/delete/{roleId}")
    public Result<?> delete(@PathVariable Long roleId){
        sysRoleService.deleteByPrimaryKey(roleId);
        return new Result<>("删除成功");

    }

    /**
     * 根据角色ID查询当前角色拥有的目录权限及菜单ID
     */
    @GetMapping("getCurrentRoleHasMenuIdsByRoleId/{roleId}")
    public Result<List<Long>> getCurrentRoleHasMenuIdsByRoleId(@PathVariable Long roleId){
        if(null==roleId){
            return new Result<>(ResultEnums.ERROR,"角色ID不能为空");
        }
        List<Long> roleIds=sysRoleService.queryCurrentRoleHasMenuIdsByRoleId(roleId);
        return new Result<>(ResultEnums.SUCCESS,roleIds);
    }

    /**
     * 保存菜单和角色之间的关系
     */
    @PostMapping("saveRoleMenu")
    public Result<?> saveRoleMenu(Long roleId, Long[] menuIds){
        if(roleId==null){
            return new Result<>(ResultEnums.ERROR,"角色ID不能为空");
        }
        sysRoleService.saveRoleMenu(roleId,menuIds);
        return new Result<>(ResultEnums.SUCCESS);
    }

    /**
     * 查询所有角色不分页
     * GET http://127.0.0.1:8080/sysRole/getAllRoles
     * 接口ID：43445095
     * 接口地址：https://www.apifox.cn/web/project/1739100/apis/api-43445095
     */
    @GetMapping("getAllRoles")
    public Result getAllRoles(){
        List<SysRole> roles=this.sysRoleService.queryAllRoles();
        return new Result(roles);
    }

    /**
     * 根据用户ID查询用户已拥有的角色ID
     * GET http://127.0.0.1:8080/sysRole/getRoleIdsByUserId/{userId}
     * 接口ID：43445094
     * 接口地址：https://www.apifox.cn/web/project/1739100/apis/api-43445094
     */
    @GetMapping("getRoleIdsByUserId/{userId}")
    public Result getRoleIdsByUserId(@PathVariable Long userId){
        List<Long> roleIds=this.sysRoleService.queryRoleIdsByUserId(userId);
        return new Result(roleIds);
    }


    /**
     * 保存用户和角色之间的关系
     * POST http://127.0.0.1:8080/sysRole/saveUserRoles
     * 接口ID：43445096
     * 接口地址：https://www.apifox.cn/web/project/1739100/apis/api-43445096
     */
    @PostMapping("saveUserRoles")
    public Result saveUserRoles(Long userId,Long [] roleIds){
        //判断用户ID否为null
        if(null==userId){
            return new Result(ResultEnums.ERROR,"用户编号不能为空");
        }
        this.sysRoleService.saveUserRoles(userId,roleIds);
        return new Result();
    }
}
